/**
 * 获取最佳题目评分结果
 * @param answerList - 用户提交的答案列表
 * @param questions - 题目列表，包含每个题目的选项和结果
 * @param question_results - 评分结果列表，包含每个评分结果的属性和描述
 */

export function getBestQuestionResult(
  answerList: string[],
  questions: {
    title: string;
    options: { result: string; value: string; key: string }[];
  }[],
  question_results: any[]
) {
  // 初始化一个对象，用于存储每个选项的计数
  const optionCount = {};

  // 遍历答案列表和对应的题目
  for (let i = 0; i < answerList.length; i++) {
    const answer = answerList[i];
    // 确保索引有效
    if (i < questions.length) {
      const question = questions[i];
      // 查找与答案匹配的选项
      const matchedOption = question.options.find(option => option.key === answer);
      
      if (matchedOption) {
        const result = matchedOption.result;
        // 如果result属性不在optionCount中，初始化为0
        if (!optionCount[result]) {
          optionCount[result] = 0;
        }
        // 在optionCount中增加计数
        optionCount[result]++;
      }
    }
  }

  // 初始化最高分数和最高分数对应的评分结果
  let maxScore = 0;
  let maxScoreResult = question_results[0];

  // 遍历评分结果列表
  for (const result of question_results) {
    // 计算当前评分结果的分数
    const score = result.resultProp.reduce((count, prop) => {
      return count + (optionCount[prop] || 0);
    }, 0);

    // 如果分数高于当前最高分数，更新最高分数和最高分数对应的评分结果
    if (score > maxScore) {
      maxScore = score;
      maxScoreResult = result;
    }
  }

  // 返回最高分数和最高分数对应的评分结果
  return maxScoreResult;
}

// 示例数据
// const answerList = ["B", "B", "B", "A"];
// const questions = [
//   {
//     title: "你通常更喜欢",
//     options: [
//       {
//         result: "I",
//         value: "独自工作",
//         key: "A",
//       },
//       {
//         result: "E",
//         value: "与他人合作",
//         key: "B",
//       },
//     ],
//   },
//   {
//     options: [
//       {
//         result: "S",
//         value: "喜欢有结构和常规",
//         key: "A",
//       },
//       {
//         result: "N",
//         value: "喜欢自由和灵活性",
//         key: "B",
//       },
//     ],
//     title: "对于日常安排",
//   },
//   {
//     options: [
//       {
//         result: "P",
//         value: "首先考虑可能性",
//         key: "A",
//       },
//       {
//         result: "J",
//         value: "首先考虑后果",
//         key: "B",
//       },
//     ],
//     title: "当遇到问题时",
//   },
//   {
//     options: [
//       {
//         result: "T",
//         value: "时间是一种宝贵的资源",
//         key: "A",
//       },
//       {
//         result: "F",
//         value: "时间是相对灵活的概念",
//         key: "B",
//       },
//     ],
//     title: "你如何看待时间",
//   },
// ];
// const question_results = [
//   {
//     resultProp: ["I", "S", "T", "J"],
//     resultDesc: "忠诚可靠，被公认为务实，注重细节。",
//     resultPicture: "icon_url_istj",
//     resultName: "ISTJ（物流师）",
//   },
//   {
//     resultProp: ["I", "S", "F", "J"],
//     resultDesc: "善良贴心，以同情心和责任为特点。",
//     resultPicture: "icon_url_isfj",
//     resultName: "ISFJ（守护者）",
//   },
// ];
//
// console.log(getBestQuestionResult(answerList, questions, question_results));
